package com.itheima.dao;

import com.github.pagehelper.Page;
import com.itheima.pojo.CheckGroup;
import com.itheima.pojo.Setmeal;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
 * 检查组代理接口
 * @author W.J.Y
 */
public interface SetMealDao {


    /**
     * 新增
     * @param setmeal 检查套餐实体类
     * @return  影响行数
     */
    Integer add(Setmeal setmeal);

    /**
     * 添加检查组与检查套餐的关联关系
     * @param checkGroupId  检查组ID
     * @param setMealId   检查套餐ID
     * @return  影响行数
     */
    Integer setCheckGroupAndSetmeal(@Param("setmeal_id") Integer setMealId,@Param("checkgroup_id") Integer checkGroupId);

    /**
     * 分页查询
     * @param queryString   检查套餐编码、助记码或者名称
     * @return  影响行数
     */
    Page<Setmeal> findPage(@Param("queryString") String queryString);


    /**
     * 查询是否存在同名或者同编号或同助记码的检查套餐
     * @param setmeal   检查套餐实例
     * @return  符合条件检查套餐数量
     */
    Integer findByNameOrCodeOrHelpCode(Setmeal setmeal);

    /**
     * 编辑
     * @param setmeal   检查套餐实例
     * @return  影响行数
     */
    Integer update(Setmeal setmeal);

    /**
     * 删除检查组与检查套餐的关联
     * @param id    检查套餐的ID
     * @return  影响行数
     */
    Integer deleteCheckGroupIdsBySetmealId(@Param("id") int id);


    /**
     * 根据ID查询检查套餐
     * @param id    ID
     * @return  检查套餐实例
     */
    Setmeal findById(@Param("id") Integer id);

    /**
     * 查询所有检查套餐
     * @return  检查套餐集合
     */
    List<Setmeal> findAll();

    /**
     * 根据检查套餐ID查询关联检查组ID
     * @param id    检查套餐ID
     * @return 检查组ID列表
     */
    List<Integer> findCheckGroupIdsBySetmealId(@Param("id") int id);

    /**
     * 删除
     * @param id    检查套餐的ID
     * @return  影响行数
     */
    Integer delete(@Param("id") int id);



    /**
     * 查找检查套餐在与???关联表中存在条数
     * @param id    检查组ID
     * @return  检查组在与检查套餐关联表中存在的条数
     */
//    int countByIdFromCheckgroup(@Param("id") int id);
}
